﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SMSManage
{
    public partial class frmManageMark : Form
    {
        #region constructorAndVariables

        /// <summary>
        /// Constructor
        /// </summary>
        public frmManageMark()
        {
            InitializeComponent();
        }

        #endregion constructorAndVariables

        #region loadInitData

        /// <summary>
        /// Form loaded
        /// </summary>
        private void frmManageMark_Load(object sender, EventArgs e)
        {   
            // TODO: This line of code loads data into the 'subject.tbl_Subject' table. You can move, or remove it, as needed.
            this.tbl_SubjectTableAdapter.Fill_tbl_Subject_Select_All(this.subject.tbl_Subject);
            BindData();
        }

        /// <summary>
        /// Bind data
        /// </summary>
        private void BindData()
        {
            // TODO: This line of code loads data into the 'mark.tbl_Mark_Select_All' table. You can move, or remove it, as needed.
            this.tbl_Mark_Select_AllTableAdapter.Fill_tbl_Mark_Select_All(this.mark.tbl_Mark_Select_All);
            
            this.txt_ID.Text = String.Empty;
            this.txt_Name.Text = String.Empty;
            this.cbb_Status.SelectedItem = "Kích hoạt";
            this.txt_RollNo.Text = String.Empty;

            if (this.cbb_Subject.Items.Count > 0)
            {
                this.cbb_Subject.SelectedIndex = 0;
            }

            this.txt_Mark.Text = String.Empty;
            this.txt_Mark_Desc.Text = String.Empty;
            this.dtpk_Mark_Time.Value = DateTime.Now;

            this.btn_Update.Enabled = false;
            this.btn_Del.Enabled = false;
            this.btn_Add.Enabled = true;
            this.btn_Search.Enabled = true;
            this.txt_ID.Enabled = true;
        }

        /// <summary>
        /// Thu tu
        /// </summary>
        private void dtGrv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            //Coded by Tuan
            for (int i = 0; i < this.dtGrv.Rows.Count; i++)
            {
                try
                {
                    this.dtGrv.Rows[i].Cells["TT"].Value = (i + 1).ToString(); //Thu tu
                }
                catch (Exception exc)
                {
                    exc.ToString();
                }
            }
            this.dtGrv.Refresh();
        }

        #endregion loadInitData

        #region updateDeleteInsert

        /// <summary>
        /// Cell clicked
        /// </summary>
        private void dtGrv_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex > -1)
                {
                    //enable, disable buttons
                    this.btn_Update.Enabled = true;
                    this.btn_Del.Enabled = true;
                    this.btn_Add.Enabled = false;
                    this.btn_Search.Enabled = false;

                    this.txt_ID.Enabled = false;

                    int MarkID =
                        int.Parse(this.dtGrv.Rows[e.RowIndex].Cells["MarkID"].Value.ToString());

                    this.txt_ID.Text = this.dtGrv.Rows[e.RowIndex].Cells["StudentID"].Value.ToString();
                    this.txt_Name.Text = this.dtGrv.Rows[e.RowIndex].Cells["StudentName"].Value.ToString();
                    this.txt_Mark.Text = this.dtGrv.Rows[e.RowIndex].Cells["MarkColumn"].Value.ToString();
                    this.txt_Mark_Desc.Text = this.dtGrv.Rows[e.RowIndex].Cells["MarkDescription"].Value.ToString();
                    this.dtpk_Mark_Time.Value = Convert.ToDateTime(this.dtGrv.Rows[e.RowIndex].Cells["MarkTime"].Value.ToString());
                    this.txt_RollNo.Text = this.dtGrv.Rows[e.RowIndex].Cells["StudentRollNumber"].Value.ToString();
                    this.lblMarkID.Text = this.dtGrv.Rows[e.RowIndex].Cells["MarkID"].Value.ToString();

                    switch (this.dtGrv.Rows[e.RowIndex].Cells["MarkStatus"].Value.ToString())
                    {
                        case "1":
                            this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                        case "0":
                            this.cbb_Status.SelectedItem = "Khóa";
                            break;
                        default:
                            this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                    }
                    
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
            }
        }

        /// <summary>
        /// Delete
        /// </summary>
        private void btn_Del_Click(object sender, EventArgs e)
        {

            try
            {
                int MarkID = int.Parse(this.lblMarkID.Text.Trim());
                DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter dpMark =
                    new DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter();

                if (MessageBox.Show("Bạn có thực sự muốn xóa điểm học viên này?", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok = dpMark.tbl_Mark_Delete_All(MarkID);
                    if (ok > 0)
                    {
                        MessageBox.Show("Xóa thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtGrv.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Xóa thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, xóa thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Cap nhat
        /// </summary>
        private void btn_Update_Click(object sender, EventArgs e)
        {
            try
            {
                int MarkID = int.Parse(this.lblMarkID.Text.Trim());
                DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter dp =
                    new SMSManage.DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter();
                int status = 0;
                int StudentID = Convert.ToInt32(this.dtGrv.Rows[0].Cells["StudentID"].Value.ToString());
                int SubjectID = Convert.ToInt32(this.dtGrv.Rows[0].Cells["SubjectID"].Value.ToString());
                double Mark = Convert.ToDouble(this.txt_Mark.Text.ToString());
                switch (this.cbb_Status.SelectedItem.ToString())
                {
                    case "Kích hoạt":
                        status = 1;
                        break;
                    case "Khóa":
                        status = 0;
                        break;
                    default:
                        status = 1;
                        break;
                }
                if (MessageBox.Show("Bạn có thực sự muốn cập nhật điểm học viên này?", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok = dp.tbl_Mark_Update_All(
                        StudentID,
                        SubjectID,
                        MarkID,
                        Mark,
                        Convert.ToDateTime(this.dtpk_Mark_Time.Value),
                        this.txt_Mark_Desc.Text.Trim(),
                        status
                        );
                    //Nếu có hơn 0 bản ghi được cập nhật
                    if (ok > 0)
                    {
                        MessageBox.Show("Cập nhật thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtGrv.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, cập nhật thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Them diem
        /// </summary>
        private void btn_Add_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txt_ID.Text.Trim() != String.Empty
                   && this.txt_Mark.Text.Trim() != String.Empty
                   && this.cbb_Subject.SelectedValue.ToString() != String.Empty)
                {
                    if (MessageBox.Show("Bạn có thực sự muốn thêm mới điểm này?", "Xác nhận",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter dpMark =
                            new DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter();
                        int status = 0;
                        int StudentID = Convert.ToInt32(this.txt_ID.Text.Trim());
                        int SubjectID = Convert.ToInt32(this.cbb_Subject.SelectedValue.ToString());
                        double Mark = Convert.ToDouble(this.txt_Mark.Text.ToString());

                        switch (this.cbb_Status.SelectedItem.ToString())
                        {
                            case "Kích hoạt":
                                status = 1;
                                break;
                            case "Khóa":
                                status = 0;
                                break;
                            default:
                                status = 1;
                                break;
                        }
                        //int ok=0;
                        int ok = dpMark.tbl_Mark_Insert_All(StudentID,
                            SubjectID,
                            Mark,
                            Convert.ToDateTime(this.dtpk_Mark_Time.Value),
                            this.txt_Mark_Desc.Text.Trim(),
                            status);

                        if (ok > 0)
                        {
                            //Báo thành công
                            MessageBox.Show("Thêm mới thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            BindData();
                            this.dtGrv.Refresh();
                        }
                        else
                        {
                            //Báo thất bại
                            MessageBox.Show("Thêm mới thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }

                    }
                }
                else
                {
                    MessageBox.Show("Bạn vui lòng nhập mã học viên, điểm và chọn môn học", "Nhập lại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, thêm mới thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        #endregion updateDeleteInsert

        #region Search

        #endregion Search
        
        /// <summary>
        /// Tìm kiếm
        /// </summary>
        private void btn_Search_Click(object sender, EventArgs e)
        {
            try
            {
                string status = String.Empty;
                switch (this.cbb_Status.SelectedItem.ToString())
                {
                    case "Kích hoạt":
                        status = "1";
                        break;
                    case "Khóa":
                        status = "0";
                        break;
                    default:
                        status = String.Empty;
                        break;
                }

                DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter dp
                    = new DatasetXSD.MarkTableAdapters.tbl_Mark_Select_AllTableAdapter();
                this.dtGrv.DataSource = dp.Get_tbl_Mark_Search_By_All(
                    this.txt_Name.Text.Trim(),
                    this.txt_RollNo.Text.Trim(),
                    this.cbb_Subject.SelectedText.Trim(),
                    this.txt_Mark.Text.Trim(),
                    this.dtpk_Mark_Time.Value,
                    status,
                    this.txt_Mark_Desc.Text.Trim());
                this.dtGrv.Refresh();
                  
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, tìm kiếm thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        #region exit
        /// <summary>
        /// Thoat
        /// </summary>
        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
        #endregion exit
    }
}
